package cn.tedu;

import java.sql.*;
import java.util.Scanner;

public class Demo04 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = sc.nextLine();
        System.out.println("请输入密码");
        String password = sc.nextLine();
        //获取连接
        try (Connection conn = DBUtils.getConn()){
//            Statement s = conn.createStatement();
//            //准备查询的SQL语句 把用户名和密码拼接进去
//            String sql =
//                    "select count(*) from user where username='"
//                            +username+"' and password='"+password+"'";
//            System.out.println(sql);
//            ResultSet rs = s.executeQuery(sql);
//            **********************解决SQL注入问题***************************
            //用? 把变量的位置占上
            String sql = "select count(*) from user " +
                    "where username=? and password=?";
            //创建执行SQL语句的对象
            //预编译: 由原来执行时编译 提前到创建时编译,编译SQL语句时将SQL语句的
            //业务逻辑锁死, 编译后不会被用户输入的内容所影响
            PreparedStatement ps = conn.prepareStatement(sql);
            //替换SQL语句中的?
            ps.setString(1,username);
            ps.setString(2,password);
            //执行查询
            ResultSet rs = ps.executeQuery();

            //不管用户输入什么 都会有结果所以不用判断是否有下一条数据直接移动游标
            rs.next();
            //取出查询到的数量
            int count = rs.getInt(1);
            if (count>0){
                System.out.println("登录成功!");
            }else{
                System.out.println("用户名或密码错误!");
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}
